#pragma once
#include "Utils.h"
#include "BaseObject.h"
namespace Smo
{
	using namespace std;
	template<class T>
	class BaseObjectWrapper : public BaseObject
	{
	protected:
		T mValue;
		
	public:
		BaseObjectWrapper(const T& val)
			: BaseObject(), mValue(val)
		{ }

		const T& GetValue() const
		{
			return mValue;
		}

		virtual void Write(wostream& stream) const override
		{
			stream << mValue;
		}

		virtual ~BaseObjectWrapper() { }
	};
}